package com.billdowney.util.session;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import javax.servlet.http.HttpSession;

import com.billdowney.util.CommonUtil;

/**
 * @ClassName: SessionContextUtil
 * @Description: 浏览器session上下文处理工具
 * @author 超级小富翁 - BillDowney
 * @date 2018年2月24日 下午4:59:18
 */
public class SessionContextUtil {

	/**
	 * 用于存放当前需要记录的session值
	 */
	private static Map<String, HttpSession> maps = new ConcurrentHashMap<>();

	/**
	 * @Function: addHttpSession
	 * @Description: 添加一个session到maps中存放，便于存取
	 * @param key     存放时的键值
	 * @param session 存放时的HttpSession
	 * @author: 超级小富翁 - BillDowney
	 * @date: 2018年2月24日 下午5:09:02
	 */
	public static synchronized void addHttpSession(String key, HttpSession session) {
		if (CommonUtil.isNotEmpty(key) && CommonUtil.isNotEmpty(session)) {
			maps.put(key, session);
		}
	}

	/**
	 * @Function: delHttpSession
	 * @Description: 根据键值删除一个HttpSession
	 * @param key 存放时的键值
	 * @author: 超级小富翁 - BillDowney
	 * @date: 2018年2月24日 下午5:11:42
	 */
	public static synchronized void delHttpSession(String key) {
		if (CommonUtil.isNotEmpty(key)) {
			maps.remove(key);
		}
	}

	/**
	 * @Function: getSize
	 * @Description: 获取当前存放的数量
	 * @return 存放的数量
	 * @author: 超级小富翁 - BillDowney
	 * @date: 2018年2月24日 下午5:13:52
	 */
	public static synchronized int getSize() {
		return maps.size();
	}

	/**
	 * @Function: getHttpSession
	 * @Description: 该函数的功能描述
	 * @param key 存放时的键值
	 * @return 存放的HttpSession，不存在时返回null
	 * @author: 超级小富翁 - BillDowney
	 * @date: 2018年2月24日 下午5:15:52
	 */
	public static synchronized HttpSession getHttpSession(String key) {
		if (CommonUtil.isNotEmpty(key)) {
			return maps.get(key);
		} else {
			return null;
		}
	}

}
